/**
 * 
 */
package com.lxp.ssh2.vo;

import java.util.List;
import java.util.Map;

import org.apache.struts2.views.util.DefaultUrlHelper;

/**
 * @Package com.lxp.ssh2.vo
 * @Class com.lxp.ssh2.vo.Page
 * @Description: 分页辅助类
 * @Author LiXiaoPeng
 * @Date 2015年4月21日 下午6:24:59
 * @Version V1.0
 * Copyright  Corporation 2015
 */
public class Page<T> {
	private List<T> data;//总数据
	private Integer size;//每页大小
	private Long total;//总条数
	private Integer index;//当前页
	
	public Map<String, Object> parameters;
	
	public void setParameters(Map<String, Object> parameters) {
		this.parameters = parameters;
	}
	public List<T> getData() {
		return data;
	}
	public void setData(List<T> data) {
		this.data = data;
	}
	public Integer getSize() {
		return size;
	}
	public void setSize(Integer size) {
		this.size = size;
	}
	public Long getTotal() {
		return total;
	}
	public void setTotal(Long total) {
		this.total = total;
	}
	public Integer getIndex() {
		return index;
	}
	public void setIndex(Integer index) {
		this.index = index;
	}
	
	/**
	 * 是否包含数据
	 */
	public boolean hashData() {
		return data==null?false:(data.size()>0);
	}
	
	/**
	 * 总页数
	 */
	public Integer getTotalPage() {
		int t = total.intValue();
		return t%size==0?t/size:(t/size+1);
	}
	
	/**
	 * 是否有下一页
	 */
	public boolean hashNext() {
		return index<getTotalPage();
	}
	
	/**
	 * 是否有上一页
	 */
	public boolean hashPrevious() {
		return index>1;
	}
	
	/**
	 * 是否是第一页
	 */
	public boolean isFirst() {
		return index==1;
	}
	
	/**
	 * 是否有最后一页
	 */
	public boolean isLast() {
		return index==getTotalPage();
	}
	
	
	
	
	
	/**
 	 * 当前页请求参数
 	 * @return
 	 */
 	public String getCurrentParameter(){
 		//return "index="+index+"&size="+size;
 		return toParameter(index);
 	}
 	/**
 	 * 下一页请求参数 
 	 * @return
 	 */
 	public String getNextPageParameter(){
 		if(hashNext()){
 			//return "index="+(index+1)+"&size="+size;
 			return toParameter(index+1);
 		}
 		return "";
 	}
 	/**
 	 * 下一页请求参数 
 	 * @return
 	 */
 	public String getPrePageParameter(){
 		if(hashPrevious()){
 			//return "index="+(index-1)+"&size="+size;
 			return toParameter(index-1);
 		}
 		return "";
 	}
 	
 	/**
 	 * 第一页请求参数 
 	 * @return
 	 */
 	public String getFirstPageParameter(){
 		if(hashData()){
 			//return "index=1&size="+size;
 			return toParameter(1);
 		}
 		return "";
 	}
 	
 	/**
 	 *最后一页
 	 * @return
 	 */
 	public String getLastPageParameter(){
 		if(hashData()){
 			//return "index="+getTotalPage()+"&size="+size;
 			return toParameter(getTotalPage());
 		}
 		return "";
 	}
 	/**
 	 * 取得指定页的参数
 	 * @return
 	 */
 	public String getPageParameter(int pageIndex){
 		if(pageIndex>=1 && pageIndex<=getTotalPage()){
 			//return "index="+pageIndex+"&size="+size;
 			return toParameter(pageIndex);
 		}
 		return "";
 	}
 	
 	private String toParameter(int index) {
 		DefaultUrlHelper helper = new DefaultUrlHelper();
 		StringBuilder sb = new StringBuilder();
 		parameters.put("index", index+"");
 		helper.buildParametersString(parameters, sb, "&");
 		sb.deleteCharAt(0);//去掉最前面的?符号
 		return sb.toString();
 	}
}
